from langchain.agents import AgentType, initialize_agent, AgentExecutor, create_tool_calling_agent
from tool.login_tool import LoginTool
from tool.email_tool import EmailTool
from model.my_chat_model import ChatModel
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder


def create_login(question):
    # 1 获取大模型
    chat = ChatModel()
    llm = chat.get_line_model()
    # 2 创建工具
    tools = [LoginTool(), EmailTool()]
    # 3 创建提示模板
    prompt = ChatPromptTemplate.from_messages([
        ("system", """
         你是一个智能的AI查询助手，你可以使用以下几个工具
         1 get_login_tool 主要用于完成系统的登录功能
         2 get_email_tool 用于发送邮件信息的
         如果用户的提问的问题是系统登录功能，就执行工具  get_login_tool，
         如果是发送邮件信息 get_email_tool, 

        """),
        ("human", "{input}"),
        ("placeholder", "{agent_scratchpad}"),  # 工具调用
    ])
    # 创建工具调用agentx
    agent = create_tool_calling_agent(llm, tools, prompt)
    # 创建智能体执行器
    agent_executor = AgentExecutor(
        agent=agent,
        tools=tools,
        verbose=True,
    )
    rs = agent_executor.invoke({"input": question})
    print(rs)
    return rs["output"]


if __name__ == '__main__':
    question = "请登录系统，用户名：11，密码是：1,必须用户名和密码都正确才能登录，如果有一个不正确请提示"
    # question = "请给767920412@qq.com发送一份验证码登录邮件，验证码是2034"
    print(create_login(question))
